Next: Inserting Pairs, Previous: Skeletons as Abbrevs, Up: Top [Contents][Index]
Skeletons are an shorthand extension to the Lisp language,
where various atoms directly perform either actions on the
current buffer or rudimentary flow control mechanisms. Skeletons
are interpreted by the function skeleton-insert.
A skeleton is a list starting with an interactor, which is
usually a prompt-string, or nil when not needed, but
can also be a Lisp expression for complex read functions or for
returning some calculated value. The rest of the list are any
number of elements as described in the following table:
"string",
?c, ?\cInsert string or character. Literal strings and characters
are passed through skeleton-transformation when
that is non-nil.
?\nInsert a newline and align under current line, but not if
this is the last element of a skeleton and the newline would
be inserted at end of line, or this is the first element and
the newline would be inserted at beginning of line. Use
newline character ?\n to prevent alignment. Use
"\n" as the first or last string element of a
skeleton to insert a newline unconditionally.
_Interesting point. When wrapping skeletons around
successive regions, they are put at these places. Point is
left at first _ where nothing is wrapped.
>Indent line according to major mode. When following
element is _, and there is a interregion that
will be wrapped here, indent that interregion.
&Logical and. If preceding element moved point, i.e., usually inserted something, do following element.
|Logical xor. If preceding element didn’t move point, i.e., usually inserted nothing, do following element.
-numberDelete preceding number characters. Depends on value of
skeleton-untabify.
() or nilIgnored.
Evaluated, and the return value is again interpreted as a skeleton element.
strA special variable that, when evaluated the first time, usually prompts for input according to the skeleton’s interactor. It is then set to the return value resulting from the interactor. Each subskeleton has its local copy of this variable.
v1, v2Skeleton-local user variables.
'expressionEvaluate following Lisp expression for its side-effect, but prevent it from being interpreted as a skeleton element.
Subskeletons are inserted recursively, not once, but as
often as the user enters something at the subskeletons
interactor. Thus there must be a str in the
subskeleton. They can also be used non-interactively, when
prompt is a lisp-expression that returns successive
list-elements.
resume:Ignored. Execution resumes here if the user quits during skeleton interpretation.
quitA constant which is non-nil when the
resume: section was entered because the user
quit.
Some modes also use other skeleton elements they themselves
defined. For example in shell script mode’s skeletons you
will find < which does a rigid indentation
backwards, or in CC mode’s skeletons you find the
self-inserting elements { and }. These
are defined by the buffer-local variable
skeleton-further-elements which is a list of
variables bound while interpreting a skeleton.
The macro define-skeleton defines a command for
interpreting a skeleton. The first argument is the command name,
the second is a documentation string, and the rest is an
interactor and any number of skeleton elements together forming a
skeleton. This skeleton is assigned to a variable of the same
name as the command and can thus be overridden from your
~/.emacs file (see
Init File in The GNU Emacs Manual).
Next: Inserting Pairs, Previous: Skeletons as Abbrevs, Up: Top [Contents][Index]